#!/bin/sh

function get_partition_dev()
{
	mtdblockid=`cat /proc/mtd| grep "$1"| grep -E -o "mtd[0-9]+" | grep -E -o "[0-9]+"`
	if [ "$mtdblockid" != "" ];then
		echo "/dev/mtdblock$mtdblockid"
	else
		echo ""
	fi
}

#print kernel error default
echo 4 > /proc/sys/kernel/printk

#start ftp server, dir=root r/w, -t 600s(timeout)
#启动后，远程设备可通过 FTP 客户端（如 FileZilla、ftp命令）连接开发板的 IP 地址，使用用户名密码登录后，可上传、下载或修改 / 目录下的文件（受权限限制）
/usr/bin/tcpsvd 0 21 ftpd -w / -t 600 &

echo "start telnet......"
/usr/sbin/telnetd &
#telnetd允许用户通过网络远程登录到设备的命令行界面，这个功能可以用于远程调试
#&表示将telnetd进程放入后台运行，不会阻塞当前脚本的执行

echo "                     __                     "
echo "            _   ____ \/ ____  __            "
echo "     /\    | \ | |\ \  / /| |/ /    /\      "
echo "    /  \   |  \| | \ \/ / | ' /    /  \     "
echo "   / /\ \  | . ' |  \  /  |  <    / /\ \    "
echo "  / ____ \ | |\  |  |  |  | . \  / ____ \   "
echo " /_/    \_\|_| \_|  |__|  |_|\_\/_/    \_\  "
echo "                                            " 

#start syslogd & klogd, log rotated 3 files(200KB) to /var/log/messages 启动系统日志服务
syslogd -D -n -O /var/log/messages -s 200 -b 3 & # -l prio
klogd -n & # -c prio

ifconfig lo 127.0.0.1

#保存内核启动日志
dmesg > /tmp/start_message

## set min free reserve bytes
echo 2048 > /proc/sys/vm/min_free_kbytes

echo "/tmp/core_%e_%p_%t" > /proc/sys/kernel/core_pattern

#insmod /usr/modules/ak_adc_key.ko
#rtc是独立供电的真实世界时模块
insmod /usr/modules/ak_rtc.ko
adjust_base_on_timer=`cat /sys/devices/platform/rtc/ak_rtc/adjust_base_on_timer`
echo 0 > /sys/devices/platform/rtc/ak_rtc/adjust_base_on_timer
hwclock -s
echo $adjust_base_on_timer > /sys/devices/platform/rtc/ak_rtc/adjust_base_on_timer

#insmod /usr/modules/ak_fb.ko lcd_ctl_force_init=1
#insmod /usr/modules/ak_pwm_char.ko
#insmod /usr/modules/ak_fb.ko
#insmod /usr/modules/ak_saradc.ko
insmod /usr/modules/ak_i2c.ko
# -e 表示测试文件是否存在
if test -e "/usr/modules/ak_efuse.ko" ; then
	insmod /usr/modules/ak_efuse.ko
fi
insmod /usr/modules/ak_pcm.ko
#insmod /usr/modules/ak_gpio_keys.ko
#insmod /usr/modules/ak_gui.ko
insmod /usr/modules/ak_ion.ko
insmod /usr/modules/ak_leds.ko
#insmod /lib/modules/4.4.192V1.5/kernel/drivers/mmc/core/mmc_core.ko
#insmod /lib/modules/4.4.192V1.5/kernel/drivers/mmc/card/mmc_block.ko
#insmod /usr/modules/ak_mci.ko
if test -e "/usr/modules/ak_uio.ko" ; then
	insmod /usr/modules/ak_uio.ko
fi
#insmod /usr/modules/exfat.ko

# 这是开发板以太网（有线网络）的驱动模块，作用：加载驱动后，系统才能识别以太网硬件（如网卡芯片），后续才能进行网络配置
insmod /usr/modules/ak_eth.ko
#激活该网络接口（相当于 “打开网卡电源”），使其处于可工作状态（能接收 / 发送数据）
ifconfig eth0 up
#-f 表示检查是否为普通文件，这个if是判断mac.txt文件是否不存在
if test ! -f "/etc/config/mac.txt" ; then
#文件不存在，代表是首次启动，将读取到的 MAC 地址保存到 /etc/config/mac.txt 文件，实现 “首次启动自动记录 MAC 地址”
    cat /sys/class/net/eth0/address > /etc/config/mac.txt
else
#非首次启动，将读取到的 MAC 地址设置到网卡
	cat /etc/config/mac.txt | xargs -i /sbin/ifconfig eth0 hw ether {}
fi

#/usr/sbin/screen.sh

# mount yaffs2 file-system.
# mount -t yaffs2 /dev/mtdblock9 /data
partition_data=`get_partition_dev DATA`
if [ "$partition_data" != "" ];then
	echo "/bin/mount -t yaffs2 $partition_data /data"
	/bin/mount -t yaffs2 $partition_data /data
fi

#start system service
/usr/sbin/service.sh start &